Large computational infrastructures such as, for example, a private cluster of workstations (COW) or a public cloud computing environment, are typically shared by multiple applications. The applications themselves might be distributed, where several application components can be spread over different physical processing nodes.
An application is a collection of distributed components, where a component is an independently schedulable unit. The distributed components interact via message passing, stream connections, and/or remote procedure calls. An application is characterized by a single performance metric referred to herein as quality of service (QoS), which can include, for example in finance engineering applications, the rate of data ingestion in messages per second and the rate of results produced and/or throughput in executed trades per second. The QoS metric is computed as a function of multiple variables including, for example, the component-specific metrics that characterize how fast these components operate and how much computational resources are used.